x %()% rng
x %(]% rng
x %[)% rng
x %[]% rng
x %][% rng
x %](% rng
x %)[% rng
x %)(% rng
x >= rng[1] & x <= rng[2]<="" code="">,
where the round bracket (
means "strictly greater than >" and the square bracket [
means ">=". Numerical values of x will be handled by C-code, which is significantly faster than two comparisons in R (especially when x is huge).
.
%][% is the negation of %()%, meaning all values lying outside the given range. Elements on the limits will return TRUE.
Both arguments will be recycled to the highest dimension, which is either the length of the vector or the number of rows of the matrix.
See also the routines used to check, whether two ranges overlap (Overlap
, Interval
).
if
, ifelse
, Comparison
,
Overlap
, Interval
x <- 1:9
x %[]% c(3,5)
# outside
x <- 1:9
x %][% c(3,5)
c(x,NA) %[]% c(3,5)
x %(]% c(3,5)
# no result when from > to:
x %[]% c(5,3)
x %(]% c(5,5)
# no problem:
ordered(x) %[]% c(3,5)
# not meaningful:
factor(x) %[]% c(3,5)
# characters
letters[letters %(]% c("d","h")]
data(d.pizza)
x <- levels(d.pizza$driver)
x %[]% c("C","G")
# select diamonds with a price between 2400 and 2510
data(d.diamonds)
d.diamonds[d.diamonds$price %[]% c(2400,2510),]
# use it with an ordered factor and select all diamonds with
# symmetry between G (included) and X (excluded).
mean(d.diamonds[d.diamonds$symmetry %[)% c("G","X"),"price"])
# use multiple ranges
2 %[]% cbind(1:4,2:5)
# both arguments are recycled
c(2,3) %[]% cbind(1:4,2:5)
Run the code above in your browser using DataLab